package com.love.rongcommon.jwt;

import cn.hutool.json.JSONUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.love.rongcommon.constant.enums.CommonEnum;
import com.love.rongcommon.vo.AccessTokenVo;

public class JwtUtil {

    /**
     * 加密并生成AccessToken
     * @param vo
     * @return
     */
    public static AccessTokenVo encode(AccessTokenVo vo) {
        CommonEnum.DATA_ERROR.isNotEmpty(vo);
        String content = JSONUtil.toJsonStr(vo);
        String sign = JWT.create().withAudience(content).sign(Algorithm.HMAC256(String.valueOf(vo.getUserId())));
        vo.setAccessToken(sign);
        return vo;
    }

    /**
     * 解密
     * @param accessToken
     * @return
     */
    public static AccessTokenVo decode(String accessToken) {
        CommonEnum.TOKEN_NOT_EXISTS.isNotEmpty(accessToken);
        String content = JWT.decode(accessToken).getAudience().get(0);
        CommonEnum.TOKEN_NOT_EXISTS.isNotEmpty(content);
        return JSONUtil.toBean(content, AccessTokenVo.class);
    }
}
